package com.itheima.enumdemo;

public class Test2 {

    public static void main(String[] args) {

        //枚举类的创建应用场景：做信息分类和标志

        //需求：模拟上下左右移动

        //方法1：用常量作为信息分类和标志（缺点：参数值不受约束）
        move(Constant.UP);
        move(Constant.DOWN);
        move(0);
        move(666);

        //方法2：用枚举作为信息分类和标志，参数值受约束
        move1(Direction.UP);
        move1(Direction.DOWN);
        //move1(666);   //报错
    }

    //定义一个方法控制移动
    public static void move(int direction) {
        switch (direction) {
            case Constant.UP:
                System.out.println("向上移动");
                break;
            case Constant.DOWN:
                System.out.println("向下移动");
                break;
            case Constant.LEFT:
                System.out.println("向左移动");
                break;
            case Constant.RIGHT:
                System.out.println("向右移动");
                break;
            default:
                System.out.println("无效的移动方向");
        }
    }

    public static void move1(Direction direction) {
        switch (direction) {
            //case Direction.UP:是错误写法
            /*
            在 Java 中，当你在 switch 语句中使用枚举类型时，
            每个 case 标签必须是该枚举类型的某个常量的非限定名称。
            这意味着你不能在 case 后面加上枚举类型的完全限定名称（即包含类名的部分），
            而应该只使用枚举常量的名字部分。
             */
            case UP:
                System.out.println("向上移动");
                break;
            case DOWN:
                System.out.println("向下移动");
                break;
            case LEFT:
                System.out.println("向左移动");
                break;
            case RIGHT:
                System.out.println("向右移动");
                break;
        }
    }
}
